// 汽车类  
class Car {
    // 基础的驾驶方法  
    public void drive() {
        System.out.println("汽车正在行驶");
    }

    // 按喇叭方法  
    public void honk() {
        System.out.println("汽车按喇叭");
    }
}

// 小汽车类，继承自汽车类  
class SmallCar extends Car {
    // 小汽车特有的属性  
    private String color;

    // 构造方法  
    public SmallCar(String color) {
        this.color = color;
    }

    // 重写驾驶方法  
    @Override
    public void drive() {
        super.drive(); // 调用父类的驾驶方法  
        System.out.println("小汽车（颜色：" + this.color + "）轻快地行驶");
    }

    // 重载按喇叭方法  
    @Override
    public void honk() {
        System.out.println("小汽车（颜色：" + this.color + "）发出清脆的喇叭声");
    }

    // 属性的getter和setter方法  
    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }
}

// 卡车类，继承自汽车类  
class Truck extends Car {
    // 卡车特有的属性  
    private int loadCapacity;

    // 构造方法  
    public Truck(int loadCapacity) {
        this.loadCapacity = loadCapacity;
    }

    // 重写驾驶方法  
    @Override
    public void drive() {
        super.drive(); // 调用父类的驾驶方法  
        System.out.println("卡车（载重：" + this.loadCapacity + "吨）轰鸣着行驶");
    }

    // 重载按喇叭方法  
    @Override
    public void honk() {
        System.out.println("卡车（载重：" + this.loadCapacity + "吨）发出响亮的喇叭声");
    }

    // 属性的getter和setter方法  
    public int getLoadCapacity() {
        return loadCapacity;
    }

    public void setLoadCapacity(int loadCapacity) {
        this.loadCapacity = loadCapacity;
    }
}

// 测试类  
class Main {
    public static void main(String[] args) {
        // 创建小汽车对象  
        SmallCar smallCar = new SmallCar("红色");
        // 调用小汽车的驾驶方法  
        smallCar.drive();
        // 调用小汽车的按喇叭方法  
        smallCar.honk();

        // 创建卡车对象  
        Truck truck = new Truck(10);
        // 调用卡车的驾驶方法  
        truck.drive();
        // 调用卡车的按喇叭方法  
        truck.honk();
    }
}